Libraries and Algorithms:
Reusable Libraries Software Engineering for Parallel Computing
Given the high cost of developing parallel software, there is a high premium on being able to reuse parallel software modules. Yet, by the nature of parallel computing, writing reusable parallel modules is more difficult. In the traditional SPMD style, one can write reusable libraries in the form of subroutines, but these are not adequate for performance (because they cannot overlap idle time with useful computations across modules, for example. See 95-07), nor multi-context reuse. Data driven paradigms, such as Charm++ (data driven objects) or user-level multi-threading are better in this regard, and are the approaches we are pursuing. Within this context, several issues still need to be researched to enable development of truly reusable components. These include: distributed data exchange, name-space collisions, interoperability among multiple paradigms, etc. We are actively engaged in studying these issues and developing techniques that address them. We believe that our parallel object system (Charm++), and the interoperable runtime system (Converse) provide a strong foundation for this research.
People
Papers/Talks
15-04
2015
[PhD Thesis]
[PhD Thesis]
Software Topological Message Aggregation Techniques For Large-scale Parallel Systems [Thesis 2015]
12-05
2012
[Talk]
[Talk]
Composable Libraries for Parallel Programming [PPSC 2012]
11-41
2011
[Paper]
[Paper]
Using Shared Arrays in Message-Driven Parallel Programs [ParCo 2011]
98-07
1998
[Paper]
[Paper]
Static Networks: A Powerful and Elegant Extension to Concurrent Object-Oriented Languages [LNCS 1998]
95-07
1995
[Paper]
[Paper]
Modularity, Reuse, and Efficiency with Message-Driven Libraries [PPSC 1995]